package bluetooth;

/**
 * Klasa implementujaca funkcjonalność klasy z J2SE <code>Vector</code>. Posiada
 * analoginczne metody oraz ograniczona dlugosc(wynikajaca z ograniczonej ilosci
 * polaczen jednego urzadzenia bluetooth.
 * obietky typu <code>Client</code> jak i <code>Server</code>.
 * @author      Przemyslaw Bierut
 * @version     1.0
 */
public class BtVector {

    private Object[] vector;
    private int size;

    /**
     * Konstruktor inicjalizujacy pola klasy.
     */
    public BtVector() {
        size = 0;
        vector = new Object[10];
    }

    /**
     * Metoda dodajaca obiekt do wektora.
     * @param object dodawany obiekt
     */
    public void add(Object object) {
        if (size < 10) {
            vector[size] = object;
            size++;
        }
    }

    /**
     * Metoda usuwajaca wybrany element, zachowujac ciaglaosc danych w wektorze.
     * @param id index elementu do usuniecia
     */
    public void remove(int id) {
        if (id >= 0 && id <= size - 1) {
            for (int i = id; i < size - 1; i++) {
                vector[i] = vector[i + 1];
            }
            vector[size - 1] = null;
            size--;
        }
    }

    /**
     * Metoda usuwa wszystkie elementy z wektora.
     */
    public void clean() {
        for (int i = 0; i < size - 1; i++) {
            vector[i] = null;
        }
        size = 0;
    }

    /**
     * Metoda zwracajaca rozmiar wektora(ilosc przechowywanych obiektow).
     * @return dlugosc wektora
     */
    public int size() {
        return size;
    }

    /**
     * Metoda zwracajaca wybrany obiekt
     * @param id index obiektu
     * @return obiekt z wektora
     */
    public Object get(int id) {
        return vector[id];
    }
}
